/*
 * @Descripttion: 
 * @version: 
 * @Author: turingchang
 * @Date: 2020-08-24 20:29:35
 * @LastEditors: turingchang
 * @LastEditTime: 2020-09-08 17:09:18
 */

const zhmoney =require('nzh');
const validator =require('./validator');
const pinyin =require('./pinyin');

var string = {};

/**
 * @description: 字符串超出长度替换字符。如字符串超长添加省略号
 * @param {string} str  原字符串
 * @param {number} len  最大长度.字符串超过此长度则剩余部分用指定字符替换
 * @param {string} char 需要用于替换的字符
 */
string.strOverflowAddEllipsis = function (str, len, char) {
    if (validator.isNull(str)) {
        return str;
    }
    if (!validator.isNum(len) && len <= 0) {
        return str;
    }
    if (validator.isNull(char)) {
        char = '...';
    }
    if (str.length > len) {
        str = str.substring(0, len) + char.toString();
    }
    return str;
}

string.isContains =function(s,char){
    var res =false;
    if(s.indexOf(cahr) != -1 ){
        res =true;
    }
    return res;
}

/**
 * @name: 字符编码
 * @param {string} s 要编码的字符串
 * @return {string} 编码后的字符串
 */
string.encode =function(s){
    return encodeURI(s);
}

/**
 * @name: 字符解码
 * @param {string}  s 要解码的字符串
 * @return {string} 解码后的字符串
 */
string.decode =function(s){
    return decodeURI(s);
}

/**
 * 获取json长度
 * @param {stirng} json 
 */
string.getJsonLength =(json) => {
    var arr = [];
    for (var item in json) {
      arr.push(json[item]);
    }
    return arr.length;
}

/**
 * 字符串转数字
 * @param {string} s 字符串
 * @param {boolean} force 转换失败是否强制返回0
 */
string.toNumber =function(s,force=false){
    try{
        if(validator.isNum(s)){
            s =s*1;
            return s;
        }else{
            if(force){
                return 0;
            }
            return s;
        }
    }catch(e){
        if(force){
            return 0;
        }
        return s;
    }
    
    
}

/**
 * 字符串转整数
 * @param {string} s 字符串
 */
string.toInt =function(s){
    if(validator.isNum(s)){
        s = ~~s;
    }else{
        return false;
    }
    return s;
}

/**
 * 字符串转整数
 * @param {string} s 字符串
 */
string.toFloat =function(s){
    if(validator.isNum(s)){
        s = parseFloat(s); 
    }else{
        return false;
    }
    return s;
}

/**
 * 格式化json字符串，解决key不带引号问题
 * @param {string} s json字符串
 */
string.jsonFormat =(s)=>{
    if(validator.isNull(s)){
        return s;
    }
    s = s.replace(/(?:\s*['"]*)?([a-zA-Z0-9]+)(?:['"]*\s*)?:/g, "\"$1\":");
    return s;
}

/***********************将数字转为中文 https://gitee.com/cnwhy/nzh/tree/master/ */
// var nzhcn = Nzh.cn;                 // 使用简体中文,  另外有 Nzh.hk -- 繁体中文
// nzhcn.encodeS(100111);              // 转中文小写 >> 十万零一百一十一
// nzhcn.encodeB(100111);              // 转中文大写 >> 壹拾万零壹佰壹拾壹
// nzhcn.encodeS("1.23456789e+21");    // 科学记数法字符串 >> 十二万三千四百五十六万万七千八百九十万亿
// nzhcn.toMoney("100111.11");         // 转中文金额 >> 人民币壹拾万零壹佰壹拾壹元壹角壹分
// encodeS(num,options) 转中文小写
// encodeB(num,options) 转中文大写
// toMoney(num,options) 转中文金额
// decodeS(zh_num) 中文小写转数字
// decodeB(zh_num) 中文大写转数字
// // options.tenMin
// // encodeS默认true
// nzhcn.encodeS("13.5");                 // 十三点五
// nzhcn.encodeS("13.5", {tenMin:false}); // 一十三点五
// // encodeB默人false
// nzhcn.encodeB("13.5");                 // 壹拾叁點伍
// nzhcn.encodeB("13.5", {tenMin:true});  // 拾叁點伍

// // options.ww
// //Nzh.cn和Nzh.hk未引入兆、京等单位，超千万亿位时，默认以争议较少的万万亿为单位
// nzhcn.encodeS(1e16);                // 一万万亿
// nzhcn.encodeS(1e16, {ww: false});   // 一亿亿
// // options.complete
// nzhcn.toMoney("1");                        //人民币壹元整
// nzhcn.toMoney("1",{complete:true});        //人民币壹元零角零分
// nzhcn.toMoney("0.1");                      //人民币壹角
// nzhcn.toMoney("0.1",{complete:true});      //人民币零元壹角零分
// //outSymbol  默认 true
// nzhcn.toMoney("1");                        //人民币壹元整
// nzhcn.toMoney("1",{outSymbol:false});      //壹元整
string.zhmoney =zhmoney;

/***************************将汉字转为拼音 */
// /**
//  * 将汉字句子转换拼音，支持声母带音调，数字音调，无音调三种格式
//  * @param {Object} words 句子
//  * @param {Object} toneType 拼音样式 0-声母带音调，1-数字音调在最后，2-无音调，默认值0
//  * @param {Object} upper 是否大写,默认为假（小写）
//  * @param {Object} cap 是否首字母大写,在upper为假时有效,默认为假（小写）
//  * @param {Object} split 分割符号，默认一个空格
//  * @return 拼音
//  */
// function convert(words, toneType, upper, cap, split) {
//     //输出拼音
// }
string.pinyin =pinyin;




module.exports = string;